package org.eddycar.jproyeddycar.contrato.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class Financiamiento implements Serializable {

    @Id
    private String id;
    private String cedulaCliente;
   //private double abono;
    private double saldo;
    @OneToMany(mappedBy = "administracion", cascade = CascadeType.ALL)
    private List<Cuota> cuotas = new ArrayList<Cuota>();
    @OneToOne(cascade = CascadeType.ALL)
    private SolicitudFinanciamiento solicitud;

    public Financiamiento(String cedulaCliente, double saldo, SolicitudFinanciamiento solicitud) {
        this.cedulaCliente = cedulaCliente;
        this.saldo = saldo;
        this.solicitud = solicitud;
    }

    public SolicitudFinanciamiento getSolicitud() {
        return solicitud;
    }

    public void setSolicitud(SolicitudFinanciamiento solicitud) {
        this.solicitud = solicitud;
    }

    public String getCedulaCliente() {
        return cedulaCliente;
    }

    public void setCedulaCliente(String cedulaCliente) {
        this.cedulaCliente = cedulaCliente;
    }

    public List<Cuota> getCuotas() {
        return cuotas;
    }

    public void setCuotas(List<Cuota> cuotas) {
        this.cuotas = cuotas;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

   

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    public Financiamiento() {
    }

   

    public double actualizarSaldo() {
        return saldo - solicitud.getCuotaMensual();
    }

    public double cuotaMora() {
        return solicitud.getCuotaMensual() + (solicitud.getCuotaMensual() * 0.025);
    }

    public double modificarCuota(double abono) {
        int n = solicitud.getPlazo() - cuotas.size();
        return (this.actualizarSaldo() - abono) / n;
    }
}
